Conventional database architectures are designed to provide for reliable processing of database transactions, such as read and write operations performed on the database. One property of database architecture designs is durability. In a durable database, when a transaction has been committed, it will not be lost if the system crashes. One way to ensure durability, is to write all changes directly to the datafiles in the database. However, accessing the database directly for every write is slow and results in poor system performance. To increase performance, conventional database systems acquire a segment of the random access memory (RAM) of a computer system and designate the segment as a database-specific page cache. The operating system does not access the page cache, which is accessed only by the database system. Conventional database systems use the page cache as a buffer to temporarily store changes. In a typical implementation, the page cache is periodically written to the datafiles. However, data stored in RAM is lost upon a power failure or system crash.
Further, in conventional relational database systems, durability is achieved by also storing changes made to datafiles in a buffer on the hard disk called a redo log or journal. Generally, incremental changes stored in the page cache are written to the redo log at regular intervals, more frequently than the changes are written to the datafiles. The database system determines when data from the page cache is written to the datafiles. When the data stored in the page cache is written to the datafiles, the page cache and the journal are flushed. If the system crashes while the database is being updated, the journal provides a back-up of the data stored in the page cache to ensure that minimal data is lost.